package com.jixuian.rabbitmq.service;

import com.jixuian.rabbitmq.po.TransMessagePO;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public interface TransMessageService {

    /**
     * 发送前暂存消息
     * @param exchange
     * @param routingKey
     * @param body
     * @return
     */
    TransMessagePO messageSendReady(String exchange, String routingKey, String body);

    /**
     * 消息发送成功删除
     * @param id
     */
    void messageSendSuccess(String id);

    /**
     * 设置消息返回
     * @param id
     * @param exchange
     * @param routingKey
     * @param body
     * @return
     */
    TransMessagePO messageSendReturn(String id, String exchange, String routingKey, String body);

    /**
     * 查询应发未发的消息
     * @return
     */
    List<TransMessagePO> listReadyMessages();

    /**
     * 记录消息发送次数
     * @param id
     */
    void messageResend(String id);

    /**
     * 消息重发多次, 放弃
     * @param id
     */
    void messageDead(String id);

    /**
     * 消息消费前保存
     * @param id
     * @param exchange
     * @param routingKey
     * @param queue
     * @param body
     * @return
     */
    TransMessagePO messageRecieveReady(String id, String exchange, String routingKey, String queue, String body);
}
